<?php

namespace app\admin\command;


use think\Config;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\Exception;

// 引入数据库类
use think\Db;

//创建自定义命令
class Coupon extends Command
{
    protected $model = null;

    protected function configure()
    {
        $this
            ->setName('coupon')
            ->setDescription('自动执行优惠劵的状态修改');
        //要执行的controller必须一样，不适用模糊查询
    }

    protected function execute(Input $input, Output $output)
    {
        // 先查询所有的活动列表
        $CouponList=Db::name('coupon')->where(['status'=>'1'])->select();
        // var_dump($CouponList);
        // exit;
        if(!$CouponList)
        {
            $output->info('当前暂无优惠劵，请等待后台添加');
            return false;
        }
        $cids = [];    
        $rids = [];

        // 循环按条件追加id
        foreach($CouponList as $item)
        {
            // time() >= 优惠劵结束时间endtime
            $endtime=$item['endtime'];
            if(time() >= $endtime)
            {
                // 修改数据
                $cids[]=$item['id'];

                $receive=Db::name('coupon_receive')->where(['cid'=>$item['id'],'status'=>'0'])->column('id');
                if($receive)
                {
                    $rids=$receive;
                }
            }
        }
        
        // var_dump($cids);
        // var_dump($rids);
        // exit;

        // 结束活动
        if(empty($cids))
        {
            $output->info('目前没有可结束的优惠劵');
        }else
        {
            $CouponResult=Db::name('coupon')->where(['id'=>['IN',$cids]])->update(['status'=>'0']);
            $ReceiveResult=Db::name('coupon_receive')->where(['id'=>['IN',$rids]])->update(['status'=>'-1']);
            if($CouponResult === FALSE || $ReceiveResult === FALSE)
            {
                $output->error('结束优惠劵失败');
            }else
            {
                $output->info("$CouponResult 个优惠劵已失效");
            }
        }
        return false;
    }
}
